home *** CD-ROM | disk | FTP | other *** search
/ CD Ware Multimedia 1995 May / cd Ware (Juegos) Epimundo.iso / DOS / C / COP.ZIP / RECTPIE.H < prev    next >
Encoding:
C/C++ Source or Header  |  1992-07-21  |  3.5 KB  |  128 lines

  1. #ifndef rectpie_H
  2. #define rectpie_H
  3.  
  4. #ifndef shape_H
  5. #include "shape.h"
  6. #endif
  7.  
  8.  
  9. struct_(Rectangle)  {
  10. /* private: */
  11.     unsigned width, heighth;
  12.     polymorphic();
  13. /* public: */
  14.     inherit(Shape);
  15. };
  16.  
  17. #define RT_ShapeThiS(thiS) baseThiS(thiS,Shape)
  18. polyBaseThiS_0_decl(RT,Shape,Rectangle);
  19. #define SH_RectangleThiS(thiS)  \
  20.     derivedThiS(thiS,Rectangle)
  21.  
  22. vFt_decl(Rectangle,Shape);
  23.  
  24. vf_decl(void,RT,SH,show,(Shape * thiS, int xxpose,
  25.     int yxpose, unsigned scale));
  26. vf_decl(void,RT,SH,destruct,(Shape * thiS,
  27.     unsigned nobj, int malloced));
  28.  
  29. struct_initVFTs_decl(RT,(Rectangle * thiS, 
  30.     void * descendanT_0, vFT_0_decl(Shape)));
  31.  
  32. #define RT_malloc(nobj)  MALLOC(sizeof(Rectangle)*nobj)
  33. #define RT_free(thiS)  FREE(thiS)
  34.  
  35. struct_init_decl(Rectangle,RT,_,
  36.     (Rectangle * thiS_0, unsigned nobj,
  37.         unsigned width, unsigned heighth,
  38.         unsigned x, unsigned y));
  39.  
  40. struct_destruct_decl(Rectangle,RT);
  41.  
  42. #define RT_init(thiS_0,nobj,width,heighth,x,y)  \
  43.     struct_init(RT,_,(thiS_0,  \
  44.     nobj,width,heighth,x,y))
  45. #define RT_init_default(thiS_0)  \
  46.     RT_init(thiS_0,1,(unsigned)getmaxx()/4,  \
  47.     (unsigned)getmaxy()/4,0,0)
  48. #define RT_new(nobj,width,heighth,x,y)  \
  49.     RT_init((Rectangle *)0,nobj,width,heighth,x,y)
  50. #define RT_new_default()  \
  51.     RT_init_default((Rectangle *)0)
  52. #define RT_destruct(thiS,nobj)  \
  53.     SH_destruct(RT_ShapeThiS(thiS),nobj)
  54. #define RT_delete(thiS_0,nobj) \
  55.     SH_delete(RT_ShapeThiS(thiS_0),nobj)
  56.  
  57. #define RT_getx(thiS) SH_getx(RT_ShapeThiS(thiS))
  58. #define RT_gety(thiS) SH_gety(RT_ShapeThiS(thiS))
  59. #define RT_show(thiS,xxpose,yxpose,scale)  \
  60.     SH_show(RT_ShapeThiS(thiS),xxpose,yxpose,scale)
  61. #define RT_show_default(thiS) RT_show(thiS,0,0,1)
  62.  
  63.  
  64.  
  65. struct_(PieSlice)  {
  66. /* private: */
  67.     unsigned startAngle, endAngle;
  68.     polymorphic();
  69. /* public: */
  70.     inherit(Circle);
  71. };
  72.  
  73. #define PS_CircleThiS(thiS) baseThiS(thiS,Circle)
  74. #define PS_ShapeThiS(thiS)  \
  75.     CR_ShapeThiS(PS_CircleThiS(thiS))
  76. polyBaseThiS_0_decl(PS,Shape,PieSlice);
  77. #define CR_PieSliceThiS(thiS)  \
  78.     derivedThiS(thiS,PieSlice)
  79. #define SH_PieSliceThiS(thiS)  \
  80.     CR_PieSliceThiS(SH_CircleThiS(thiS))
  81.  
  82. vFt_decl(PieSlice,Shape);
  83.  
  84. vf_decl(void,PS,SH,show,(Shape * thiS, int xxpose,
  85.     int yxpose, unsigned scale));
  86. vf_decl(void,PS,SH,destruct,(Shape * thiS,
  87.     unsigned nobj, int malloced));
  88.  
  89. struct_initVFTs_decl(PS,(PieSlice * thiS,
  90.     void * descendanT_0, vFT_0_decl(Shape)));
  91.  
  92. #define PS_malloc(nobj)  MALLOC(sizeof(PieSlice)*nobj)
  93. #define PS_free(thiS)  FREE(thiS)
  94.  
  95. struct_init_decl(PieSlice,PS,_,
  96.     (PieSlice * thiS_0, unsigned nobj,
  97.         unsigned startAngle,
  98.         unsigned endAngle,
  99.         unsigned radius,
  100.         unsigned x, unsigned y));
  101.  
  102. struct_destruct_decl(PieSlice,PS);
  103.  
  104. #define PS_init(thiS_0,nobj,startAngle,endAngle,  \
  105.     radius,x,y) struct_init(PS,_,(thiS_0,  \
  106.     nobj,startAngle,endAngle,radius,x,y))
  107. #define PS_init_default(thiS_0)  \
  108.     PS_init(thiS_0,1,30,60,  \
  109.     (unsigned)getmaxy()/8,0,0)
  110. #define PS_new(nobj,startAngle,endAngle,radius,x,y)  \
  111.     PS_init((PieSlice *)0,nobj,  \
  112.     startAngle,endAngle,radius,x,y)
  113. #define PS_new_default()  \
  114.     PS_init_default((PieSlice *)0)
  115. #define PS_destruct(thiS,nobj)  \
  116.     CR_destruct(PS_CircleThiS(thiS),nobj)
  117. #define PS_delete(thiS_0,nobj) \
  118.     CR_delete(PS_CircleThiS(thiS_0),nobj)
  119.  
  120. #define PS_getx(thiS) CR_getx(PS_CircleThiS(thiS))
  121. #define PS_gety(thiS) CR_gety(PS_CircleThiS(thiS))
  122. #define PS_show(thiS,xxpose,yxpose,scale)  \
  123.     CR_show(PS_CircleThiS(thiS),xxpose,yxpose,scale)
  124. #define PS_show_default(thiS) PS_show(thiS,0,0,1)
  125.  
  126.  
  127. #endif
  128.